﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using BlueLotus7.ArchiveSystem.Common;
using BlueLotus7.ArchiveSystem.Common.Contracts.Sina.Weibo;


namespace BlueLotus7.ArchiveSystem.Interfaces
{
    [ServiceContract]
    public interface IArchiveWeiboService : IArchiveSystemCommonService
    {
        #region Operations for Tasks

        [OperationContract]
        Guid CreateOrUpdateWeiboUser(WeiboUser weiboUser);

        [OperationContract]
        Guid CreateOrUpdateWeiboUser(WeiboArticle weiboArticle);

        #endregion

        [OperationContract]
        WeiboArticle RetrieveWeiboArticleByIdentity(string identity);

        #region Analysis & Reporting

        [OperationContract]
        List<WeiboUser> GetMostCommunicationUsers(WeiboUserAnalysisRequest request);

        [OperationContract]
        List<WeiboArticle> QuerySameInvolvedArticles(MultipleWeiboArticleAnalysisRequest request);

        [OperationContract]
        List<WeiboUser> QuerySameInvolvedUsers(MultipleWeiboUserAnalysisRequest request);

        [OperationContract]
        DayTimeStatistics GetDayTimeStatisticsForArticles(WeiboArticleAnalysisRequest request);

        [OperationContract]
        Dictionary<DateTime, int> GetDateStatisticsForArticles(WeiboArticleAnalysisRequest request);

        [OperationContract]
        Dictionary<DateTime, int> GetDateStatisticsForUsers(WeiboUserAnalysisRequest request);

        #endregion
    }
}
